package com.shenchuangit.rydemo.util.tree;

import java.util.ArrayList;
import java.util.List;

public class TreeUtils {
        public static <T extends MyTreeEntity> List<T> listWithTree(List<T> tes) {
            for (T te : tes){
           //     if (te.getParentId() != null && te.getParentId().equals(0L))
                    te.setChildren(getChild(te,tes));
           //     else
           //         te.setChildren(null);
            }
            List<T> returnList = new ArrayList<>();
            for (T te : tes)
                if (te.getParentId().equals(0L))
                    returnList.add(te);
            return returnList;
        }

        private static <T extends MyTreeEntity> List<T> getChild(T root, List<T> all) {

            // 创建一个集合，存储父节点的子节点
            List<T> childs = new ArrayList<>();

            //将 集合中父id == 当前父节点id，即代表该rg是当前父节点的子节点之一
            for (T rg : all){
                if (rg.getParentId().equals(root.getId()))
                    childs.add(rg);
            }
            if(childs.size() == 0) return null;
            return childs;
        }
}
